package com.ddm.config;

import com.ddm.job.ExpiringSubscribeJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class QuartzConfig {

    /**
     * 定义任务详情：指定要执行的Job（ExpiringSubscribeJob）
     */
    @Bean
    public JobDetail expiringSubscribeJobDetail() {
        return JobBuilder.newJob(ExpiringSubscribeJob.class)
                .withIdentity("expiringSubscribeJob", "subscribeGroup") // 任务唯一标识（名称+组名）
                .storeDurably() // 即使没有触发器关联，也保留任务
                .build();
    }

    /**
     * 定义触发器：指定任务执行时间（每天凌晨2点）
     */
    @Bean
    public Trigger expiringSubscribeTrigger() {
        // 配置Cron表达式：每天凌晨2点执行
        CronScheduleBuilder cronSchedule = CronScheduleBuilder.cronSchedule("0 0 2 * * ?");
        // 临时测试用：每分钟执行一次（验证后改回原表达式）
//        CronScheduleBuilder cronSchedule = CronScheduleBuilder.cronSchedule("0 * * * * ?");

        return TriggerBuilder.newTrigger()
                .forJob(expiringSubscribeJobDetail()) // 关联任务详情
                .withIdentity("expiringSubscribeTrigger", "subscribeGroup") // 触发器唯一标识
                .withSchedule(cronSchedule) // 绑定时间规则
                .build();
    }
}